#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;

//先存储--邻接表
const int N=100020,M=N*2;
int ans=N; //记录最终结果
int h[N],e[M],ne[M],idx;
int n;
bool st[N]; //标记是否被搜索过

void add(int a,int b)
{
    e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}

int dfs(int u)
{
    st[u]=true;
    int sum=1;
    int res=0;
    //邻接表查找
    for(int i=h[u];i!=-1;i=ne[i])
    {
        int j=e[i];
        if(!st[j]) 
        {
            int s=dfs(j);
            res=max(res,s); //选出儿子里最大的
            sum+=s; //记录sum，为了后面的 n-sum
        }
    }
    res=max(res,n-sum);
    ans=min(ans,res);
    return sum;
}

int main()
{
    memset(h, -1, sizeof h); //初始化h数组 -1表示尾节点
    cin>>n;
    int a,b;
    for(int i=0;i<n-1;i++)
    {
        cin>>a>>b;
        add(a,b);
        add(b,a);
    }

    dfs(1);

    cout<<ans<<endl;
    return 0;
}